System.register(['./binding-modes'], function (_export) {
'use strict';
var bindingMode, BindingExpression, Binding;
function _classCallCheck(instance, Constructor) { Iif (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
return {
setters: [function (_bindingModes) {
bindingMode = _bindingModes.bindingMode;
}],
execute: function () {
BindingExpression = (function () {
function BindingExpression(observerLocator, targetProperty, sourceExpression, mode, valueConverterLookupFunction, attribute) {
_classCallCheck(this, BindingExpression);
this.observerLocator = observerLocator;
this.targetProperty = targetProperty;
this.sourceExpression = sourceExpression;
this.mode = mode;
this.valueConverterLookupFunction = valueConverterLookupFunction;
this.attribute = attribute;
this.discrete = false;
}
BindingExpression.prototype.createBinding = function createBinding(target) {
return new Binding(this.observerLocator, this.sourceExpression, target, this.targetProperty, this.mode, this.valueConverterLookupFunction);
};
return BindingExpression;
})();
_export('BindingExpression', BindingExpression);
Binding = (function () {
function Binding(observerLocator, sourceExpression, target, targetProperty, mode, valueConverterLookupFunction) {
_classCallCheck(this, Binding);
this.observerLocator = observerLocator;
this.sourceExpression = sourceExpression;
this.targetProperty = observerLocator.getObserver(target, targetProperty);
this.mode = mode;
this.valueConverterLookupFunction = valueConverterLookupFunction;
}
Binding.prototype.getObserver = function getObserver(obj, propertyName) {
return this.observerLocator.getObserver(obj, propertyName);
};
Binding.prototype.bind = function bind(source) {
var _this = this;
var targetProperty = this.targetProperty,
info;
if ('bind' in targetProperty) {
targetProperty.bind();
}
Eif (this.mode == bindingMode.oneWay || this.mode == bindingMode.twoWay) {
Iif (this._disposeObserver) {
if (this.source === source) {
return;
}
this.unbind();
}
info = this.sourceExpression.connect(this, source);
Eif (info.observer) {
this._disposeObserver = info.observer.subscribe(function (newValue) {
var existing = targetProperty.getValue();
if (newValue !== existing) {
targetProperty.setValue(newValue);
}
});
}
Eif (info.value !== undefined) {
targetProperty.setValue(info.value);
}
if (this.mode == bindingMode.twoWay) {
this._disposeListener = targetProperty.subscribe(function (newValue) {
_this.sourceExpression.assign(source, newValue, _this.valueConverterLookupFunction);
});
}
this.source = source;
} else {
var value = this.sourceExpression.evaluate(source, this.valueConverterLookupFunction);
if (value !== undefined) {
targetProperty.setValue(value);
}
}
};
Binding.prototype.unbind = function unbind() {
if ('unbind' in this.targetProperty) {
this.targetProperty.unbind();
}
Eif (this._disposeObserver) {
this._disposeObserver();
this._disposeObserver = null;
}
if (this._disposeListener) {
this._disposeListener();
this._disposeListener = null;
}
};
return Binding;
})();
}
};
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9FaXNlbmJlcmdFZmZlY3QvRG9jdW1lbnRzL0dpdEh1Yi9UaGUgRHVyYW5kYWwgUHJvamVjdC9hdXJlbGlhL2JpbmRpbmcvc3JjL2JpbmRpbmctZXhwcmVzc2lvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7bUJBRWEsaUJBQWlCLEVBd0J4QixPQUFPOzs7Ozs7a0NBMUJMLFdBQVc7OztBQUVOLHVCQUFpQjtBQUNqQixpQkFEQSxpQkFBaUIsQ0FDaEIsZUFBZSxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFDM0QsSUFBSSxFQUFFLDRCQUE0QixFQUFFLFNBQVMsRUFBQztnQ0FGckMsaUJBQWlCOztBQUcxQixjQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztBQUN2QyxjQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztBQUNyQyxjQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7QUFDekMsY0FBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDakIsY0FBSSxDQUFDLDRCQUE0QixHQUFHLDRCQUE0QixDQUFDO0FBQ2pFLGNBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBQzNCLGNBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1NBQ3ZCOztBQVZVLHlCQUFpQixXQVk1QixhQUFhLEdBQUEsdUJBQUMsTUFBTSxFQUFDO0FBQ25CLGlCQUFPLElBQUksT0FBTyxDQUNoQixJQUFJLENBQUMsZUFBZSxFQUNwQixJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLE1BQU0sRUFDTixJQUFJLENBQUMsY0FBYyxFQUNuQixJQUFJLENBQUMsSUFBSSxFQUNULElBQUksQ0FBQyw0QkFBNEIsQ0FDaEMsQ0FBQztTQUNMOztlQXJCVSxpQkFBaUI7OzttQ0FBakIsaUJBQWlCOztBQXdCeEIsYUFBTztBQUNBLGlCQURQLE9BQU8sQ0FDQyxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUs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QUMsZ0JBQWdCLEVBQUUsQ0FBQztBQUN4QixnQkFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztXQUM5Qjs7QUFFRCxjQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBQztBQUN2QixnQkFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7QUFDeEIsZ0JBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7V0FDOUI7U0FDRjs7ZUExRUcsT0FBTyIsImZpbGUiOiIvVXNlcnMvRWlzZW5iZXJnRWZmZWN0L0RvY3VtZW50cy9HaXRIdWIvVGhlIER1cmFuZGFsIFByb2plY3QvYXVyZWxpYS9iaW5kaW5nL3NyYy9iaW5kaW5nLWV4cHJlc3Npb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2JpbmRpbmdNb2RlfSBmcm9tICcuL2JpbmRpbmctbW9kZXMnO1xuXG5leHBvcnQgY2xhc3MgQmluZGluZ0V4cHJlc3Npb24ge1xuICBjb25zdHJ1Y3RvcihvYnNlcnZlckxvY2F0b3IsIHRhcmdldFByb3BlcnR5LCBzb3VyY2VFeHByZXNzaW9uLFxuICAgIG1vZGUsIHZhbHVlQ29udmVydGVyTG9va3VwRnVuY3Rpb24sIGF0dHJpYnV0ZSl7XG4gICAgdGhpcy5vYnNlcnZlckxvY2F0b3IgPSBvYnNlcnZlckxvY2F0b3I7XG4gICAgdGhpcy50YXJnZXRQcm9wZXJ0eSA9IHRhcmdldFByb3BlcnR5O1xuICAgIHRoaXMuc291cmNlRXhwcmVzc2lvbiA9IHNvdXJjZUV4cHJlc3Npb247XG4gICAgdGhpcy5tb2RlID0gbW9kZTtcbiAgICB0aGlzLnZhbHVlQ29udmVydGVyTG9va3VwRnVuY3Rpb24gPSB2YWx1ZUNvbnZlcnRlckxvb2t1cEZ1bmN0aW9uO1xuICAgIHRoaXMuYXR0cmlidXRlID0gYXR0cmlidXRlO1xuICAgIHRoaXMuZGlzY3JldGUgPSBmYWxzZTtcbiAgfVxuXG4gIGNyZWF0ZUJpbmRpbmcodGFyZ2V0KXtcbiAgICByZXR1cm4gbmV3IEJpbmRpbmcoXG4gICAgICB0aGlzLm9ic2VydmVyTG9jYXRvcixcbiAgICAgIHRoaXMuc291cmNlRXhwcmVzc2lvbixcbiAgICAgIHRhcmdldCxcbiAgICAgIHRoaXMudGFyZ2V0UHJvcGVydHksXG4gICAgICB0aGlzLm1vZGUsXG4gICAgICB0aGlzLnZhbHVlQ29udmVydGVyTG9va3VwRnVuY3Rpb25cbiAgICAgICk7XG4gIH1cbn1cblxuY2xhc3MgQmluZGluZyB7XG4gIGNvbnN0cnVjdG9yKG9ic2VydmVyTG9jYXRvciwgc291cmNlRXhwcmVzc2lvbiwgdGFyZ2V0LCB0YXJnZXRQcm9wZXJ0eSwgbW9kZSwgdmFsdWVDb252ZXJ0ZXJMb29rdXBGdW5jdGlvbil7XG4gICAgdGhpcy5vYnNlcnZlckxvY2F0b3IgPSBvYnNlcnZlckxvY2F0b3I7XG4gICAgdGhpcy5zb3VyY2VFeHByZXNzaW9uID0gc291cmNlRXhwcmVzc2lvbjtcbiAgICB0aGlzLnRhcmdldFByb3BlcnR5ID0gb2JzZXJ2ZXJMb2NhdG9yLmdldE9ic2VydmVyKHRhcmdldCwgdGFyZ2V0UHJvcGVydHkpO1xuICAgIHRoaXMubW9kZSA9IG1vZGU7XG4gICAgdGhpcy52YWx1ZUNvbnZlcnRlckxvb2t1cEZ1bmN0aW9uID0gdmFsdWVDb252ZXJ0ZXJMb29rdXBGdW5jdGlvbjtcbiAgfVxuXG4gIGdldE9ic2VydmVyKG9iaiwgcHJvcGVydHlOYW1lKXtcbiAgICByZXR1cm4gdGhpcy5vYnNlcnZlckxvY2F0b3IuZ2V0T2JzZXJ2ZXIob2JqLCBwcm9wZXJ0eU5hbWUpO1xuICB9XG5cbiAgYmluZChzb3VyY2Upe1xuICAgIHZhciB0YXJnZXRQcm9wZXJ0eSA9IHRoaXMudGFyZ2V0UHJvcGVydHksXG4gICAgICAgIGluZm87XG5cbiAgICBpZiAoJ2JpbmQnIGluIHRhcmdldFByb3BlcnR5KXtcbiAgICAgIHRhcmdldFByb3BlcnR5LmJpbmQoKTtcbiAgICB9XG5cbiAgICBpZih0aGlzLm1vZGUgPT0gYmluZGluZ01vZGUub25lV2F5IHx8IHRoaXMubW9kZSA9PSBiaW5kaW5nTW9kZS50d29XYXkpe1xuICAgICAgaWYodGhpcy5fZGlzcG9zZU9ic2VydmVyKXtcbiAgICAgICAgaWYodGhpcy5zb3VyY2UgPT09IHNvdXJjZSl7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51bmJpbmQoKTtcbiAgICAgIH1cblxuICAgICAgaW5mbyA9IHRoaXMuc291cmNlRXhwcmVzc2lvbi5jb25uZWN0KHRoaXMsIHNvdXJjZSk7XG5cbiAgICAgIGlmKGluZm8ub2JzZXJ2ZXIpe1xuICAgICAgICB0aGlzLl9kaXNwb3NlT2JzZXJ2ZXIgPSBpbmZvLm9ic2VydmVyLnN1YnNjcmliZShuZXdWYWx1ZSA9PntcbiAgICAgICAgICB2YXIgZXhpc3RpbmcgPSB0YXJnZXRQcm9wZXJ0eS5nZXRWYWx1ZSgpO1xuICAgICAgICAgIGlmKG5ld1ZhbHVlICE9PSBleGlzdGluZyl7XG4gICAgICAgICAgICB0YXJnZXRQcm9wZXJ0eS5zZXRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYoaW5mby52YWx1ZSAhPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgdGFyZ2V0UHJvcGVydHkuc2V0VmFsdWUoaW5mby52YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGlmKHRoaXMubW9kZSA9PSBiaW5kaW5nTW9kZS50d29XYXkpe1xuICAgICAgICB0aGlzLl9kaXNwb3NlTGlzdGVuZXIgPSB0YXJnZXRQcm9wZXJ0eS5zdWJzY3JpYmUobmV3VmFsdWUgPT4ge1xuICAgICAgICAgIHRoaXMuc291cmNlRXhwcmVzc2lvbi5hc3NpZ24oc291cmNlLCBuZXdWYWx1ZSwgdGhpcy52YWx1ZUNvbnZlcnRlckxvb2t1cEZ1bmN0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICAgIH1lbHNle1xuICAgICAgdmFyIHZhbHVlID0gdGhpcy5zb3VyY2VFeHByZXNzaW9uLmV2YWx1YXRlKHNvdXJjZSwgdGhpcy52YWx1ZUNvbnZlcnRlckxvb2t1cEZ1bmN0aW9uKTtcblxuICAgICAgaWYodmFsdWUgIT09IHVuZGVmaW5lZCl7XG4gICAgICAgIHRhcmdldFByb3BlcnR5LnNldFZhbHVlKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1bmJpbmQoKXtcbiAgICBpZiAoJ3VuYmluZCcgaW4gdGhpcy50YXJnZXRQcm9wZXJ0eSl7XG4gICAgICB0aGlzLnRhcmdldFByb3BlcnR5LnVuYmluZCgpO1xuICAgIH1cbiAgICBpZih0aGlzLl9kaXNwb3NlT2JzZXJ2ZXIpe1xuICAgICAgdGhpcy5fZGlzcG9zZU9ic2VydmVyKCk7XG4gICAgICB0aGlzLl9kaXNwb3NlT2JzZXJ2ZXIgPSBudWxsO1xuICAgIH1cblxuICAgIGlmKHRoaXMuX2Rpc3Bvc2VMaXN0ZW5lcil7XG4gICAgICB0aGlzLl9kaXNwb3NlTGlzdGVuZXIoKTtcbiAgICAgIHRoaXMuX2Rpc3Bvc2VMaXN0ZW5lciA9IG51bGw7XG4gICAgfVxuICB9XG59XG4iXX0= |